package br.com.translog.controlador;

import br.com.translog.dao.DAOFornecedor;
import br.com.translog.dao.DAOValidacao;
//import br.com.translog.dao.DAOValidacao;
import br.com.translog.interfacee.IDAOFornecedor;
import br.com.translog.interfacee.IDAOValidacao;
//import br.com.translog.interfacee.IDAOValidacao;
import br.com.translog.modelo.Bairro;
import br.com.translog.modelo.Cidade;
import br.com.translog.modelo.Cliente;
import br.com.translog.modelo.Estado;
import br.com.translog.modelo.Fornecedor;
import br.com.translog.modelo.Logradouro;
import br.com.translog.modelo.PessoaJuridica;
import javax.swing.JOptionPane;

public final class ControladorFornecedor {
    
    private IDAOFornecedor repoFornecedor;
    private IDAOValidacao validacao;
    
    private static final ControladorFornecedor instFornecedor = new ControladorFornecedor();
    
    private ControladorFornecedor() {
        
        repoFornecedor = new DAOFornecedor();
        validacao = new DAOValidacao();
    }

    public static synchronized ControladorFornecedor getInstFornecedor() {
        
        return instFornecedor;
    }

    public Bairro validaBairro(String nomeBairro) {
        
        Bairro bairro = null;
        
        if (nomeBairro.equals("SELECIONE A OPCAO")) {
            JOptionPane.showMessageDialog(null, "Selecione o Bairro do Fornecedor!");
        } else {
            bairro = validacao.validaBairro(nomeBairro); 
        }
        
        return bairro;     
    }
    
    public Cidade validaCidade(String nomeCidade) {
        
        Cidade cidade = null;
        
        if (nomeCidade.equals("SELECIONE A OPCAO")) {
            JOptionPane.showMessageDialog(null, "Selecione a Cidade do Fornecedor!");
        } else {
            cidade = validacao.validaCidade(nomeCidade); 
        }
        
        return cidade;  
    }
    
    public Estado validaEstado(String nomeEstado) {
        
        Estado estado = null;
        
        if (nomeEstado.equals("SELECIONE A OPCAO")) {
            JOptionPane.showMessageDialog(null, "Selecione o Estado do Fornecedor!");
        } else {
            estado = validacao.validaEstado(nomeEstado); 
        }
        
        return estado; 
    }
    
    public void cadastraFornecedor(Fornecedor fornecedor, PessoaJuridica pessoaJuridica, Logradouro logradouro, Cliente cliente) {

        //validações
        try {
            repoFornecedor.cadastraFornecedor(fornecedor, pessoaJuridica, logradouro, cliente);
            JOptionPane.showMessageDialog(null, "Fornecedor Cadastrado com Sucesso!");
        } catch (Exception e) {
        } 
    }
    
    public void alteraFornecedor(Fornecedor fornecedor, PessoaJuridica pessoaJuridica, Logradouro logradouro, Cliente cliente) {
        
        //validações
        
        try {
            repoFornecedor.alteraFornecedor(fornecedor, pessoaJuridica, logradouro, cliente);
            JOptionPane.showMessageDialog(null, "Dados Atualizados com Sucesso!”");
        } catch (Exception e) {
        }   
    }
    
    public void excluiFornecedor(Fornecedor fornecedor, PessoaJuridica pessoaJuridica, Logradouro logradouro, Cliente cliente) {
        
        try {
            repoFornecedor.excluiFornecedor(fornecedor, pessoaJuridica, logradouro, cliente);
            JOptionPane.showMessageDialog(null, "Fornecedor Excluído com Sucesso!”");
        } catch (Exception e) {
        } 
    }
    
    public Fornecedor consultaFornecedor(int codigo) {
        
        return repoFornecedor.consultaFornecedor(codigo);      
    }
}
